﻿using BookStore.Solution.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BookStore.Solution.BLL
{
   public class ProductManager
    {
       
       public List<Product> GetAll()
       {
           List<Product> product = new List<Product>();
           using (var context = new BookStoreEntities())
           {
               context.Configuration.LazyLoadingEnabled = false;
               product = (from a in context.Products where a.Quatity > 0 && a.Status != "Đã xóa" select a).ToList<Product>();
           }
           return product;
       }
       public Product SearchByID(string id)
       {
           Product products = null;
           using (BookStoreEntities ctx = new BookStoreEntities())
           {
               products = ctx.Products.Where(a =>a.ProductID.CompareTo(id)==0).FirstOrDefault<Product>();
           }
           return products;
       }
       public string UpdateProduct(Product t)
       {
           Product product = null;
           string kq = "";
           using (BookStoreEntities ctx = new BookStoreEntities())
           {
               product = ctx.Products.Where(a => a.ProductID.CompareTo(t.ProductID)==0).FirstOrDefault<Product>();
               try
               {
                   if (product != null)
                   {
                       product.Quatity = t.Quatity;
                       ctx.Entry(product).State = System.Data.Entity.EntityState.Modified;
                       if (ctx.SaveChanges() > 0)
                       {
                           kq = "Cập nhật thành công";
                       }
                       else
                           kq = "Cập nhật thất bại";
                   }
               }
               catch
               {
                   kq = "Cập nhật thất bại";
               }
           }
           return kq;
       }

       public string UpdateProduct(BillDetail b,int status)
       {
           Product product = null;
           string kq = "";
           using (BookStoreEntities ctx = new BookStoreEntities())
           {
               product = ctx.Products.Where(a => a.ProductID.CompareTo(b.ProductID) == 0).FirstOrDefault<Product>();
               try
               {
                   if (product != null)
                   {
                       if (status == 1)
                       {
                           product.Quatity += b.Quantity;
                       }
                       else
                       {
                           if(b.Status.CompareTo("Đã xóa")!=0)
                                 product.Quatity = product.Quatity - b.Quantity;
                       }
                       ctx.Entry(product).State = System.Data.Entity.EntityState.Modified;
                       ctx.SaveChanges();
                       kq = "Cập nhật thành công";
                   }
               }
               catch
               {
                   kq = "Cập nhật thất bại";
               }
           }
           return kq;
       }
       public string UpdateProduct(EntryBillDetail b, int status)
       {
           Product product = null;
           string kq = "";
           using (BookStoreEntities ctx = new BookStoreEntities())
           {
               product = ctx.Products.Where(a => a.ProductID.CompareTo(b.ProductID) == 0).FirstOrDefault<Product>();
               try
               {
                   if (product != null)
                   {
                       if (status == 1 && b.Status.CompareTo("Đã xóa") != 0)
                       {
                           product.Quatity = product.Quatity - b.Quatity;
                       }
                       else
                       {
                           if (b.Status.CompareTo("Đã xóa") != 0)
                               product.Quatity = product.Quatity +b.Quatity;
                       }
                       ctx.Entry(product).State = System.Data.Entity.EntityState.Modified;
                       ctx.SaveChanges();
                       kq = "Cập nhật thành công";
                   }
               }
               catch
               {
                   kq = "Cập nhật thất bại";
               }
           }
           return kq;
       }
    }
}
